package com.mycase.im.boot.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.mycase.im.boot.entity.database.ImUserFriend;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.List;

/**
 * @Author ZhuHJay
 * @Date 2021/8/13 19:08
 */
public interface UserFriendService extends IService<ImUserFriend> {

    /**
     * 获取该用户的好友列表
     * @param id 用户id
     * @return 列表
     */
    List<ImUserFriend> getFriendList(String id);

    /**
     * 判断两个用户是否为好友关系
     * @param reqId 用户id
     * @param respId 用户id
     * @return 好友?
     */
    Boolean isFriendRelation(String reqId, String respId);

    /**
     * 回复申请的操作人, 发送消息给申请人, 并获取该好友信息
     * @param respId 回复申请人id
     * @param reqId 申请人id
     * @return 申请人的信息
     */
    ImUserFriend getFriendInfoByReplyApply(String respId, String reqId);

    /**
     * 申请人的操作, 接收到回复申请人的添加信息, 并获取该好友信息
     * @param reqId 申请人id
     * @param respId 回复申请人id
     * @return 回复申请人的信息
     */
    ImUserFriend getFriendInfoByApply(String reqId, String respId);

    /**
     * 修改好友备注
     * @param userId 修改人id
     * @param friendId 好友id
     * @param remark 新的备注
     */
    void setFriendRemark(String userId, String friendId, String remark);

    /**
     * 切除好友关系, 不会进行聊天记录的清除
     * @param userId 解除关系执行人
     * @param friendId 好友
     */
    void cutFriendRelation(String userId, String friendId);
}
